7.7.1 Atmosfera
Figura 229- La funzione di dispersione
di Rayleigh
La dispersione di Mie è usata per particelle abbastanza piccole come le minuscole gocce d'acqua che costituiscono la nebbia, le nuvole e le particelle inquinanti. Questo modello di dispersione è estremamente direzionale ; la quantità di luce dispersa è maggiore quando la luce incidente è rivolta direttamente contro l'osservatore. E' minore quando la luce incidente si allontana dall'osservatore, rimanendo parallela con la sua vista. C'è inoltre differenza tra i modelli che descrivono la foschia e l'atmosfera inquinata. Il modello che descrive questo secondo tipo di atmosfera è molto più direzionale dell'altro.
Figura 230- La funzione di dispersione
di Mie per la foschia
Figura 231- La funzione di dispersione
di Mie per particelle più grandi (aria inquinata)
La dispersione di Heyney-Greenstein è basata su una funzione analitica e può essere usata per modellare una grande varietà di tipi di dispersioni. La funzione modella un'ellisse con una determinata eccentricità, e. Quest'eccentricità è specificata dalla parola chiave eccentricity che è usata solo per questo tipo di atmosfera (tipo 5). Il valore 0 assegnato all'eccentricità definisce la dispersione isotropa, mentre valori positivi produrranno una dispersione nella direzione della luce e valori negativi produrranno dispersione nella direzione opposta alla luce. Valori molto grandi di e incrementeranno la direzionalità della dispersione.
Figura 232- La funzione di dispersione
di Henyey -Greenstein con diversi valori di eccentricità
Il modo più veloce per usare diversi
tipi di dispersione sarà quello di dichiarare alcne costanti ed
usarle nella definizione dell'atmosfera.
#declare ISOTROPIC_SCATTERING = 1
#declare MIE_HAZY_SCATTERING = 2
#declare MIE_MURKY_SCATTERING = 3
#declare RAYLEIGH_SCATTERING = 4
#declare HENYEY_GREENSTEIN_SCATTERING = 5
la parola chiave distance
è usata per determinare la densità delle particelle nell'atmosfera.
Questa densità è costante nell'intera atmosfera e il parametro
distance
funzionerà allo stesso modo visto per la nebbia.
Con la parola chiave scattering
è possibile modificare la quantità di luce che è dispersa
dall'atmosfera aumentandone o diminuendone la luminosità. Valori
più piccoli di dispersione diminuiranno la luminosità mentre
valori più alti l'aumenteranno.
La parola chiave color o
colour
può essere usata per creare atmosfere colorate, cioè può
essere usata per creare particelle che filtreranno la luce che le attraversa.
Il colore predefinito è nero.
La luce che passa attraverso l'atmosfera (sia proveniente dalle sorgenti
luminose, sia dallo sfondo) è filtrata dal colore dell'atmosfera
se il colore specificato ha un valore diverso da zero. In altre parole,
la quantità di luce che è filtrata dall'atmosfera è
data dal valore che è stato assegnato al filtro (nello stesso modo
in cui si comporta la nebbia). Usando un colore rgbf
<1, 0, 0, 0.25> si otterrà
un'atmosfera rossastra perché il 25% della luce che passa attraverso
l'atmosfera sarà filtrato dal colore dell'atmosfera, cioè
rgb <1, 0, 0>
( rosso).
Il canale di trasmittanza del colore dell'atmosfera è utilizzato
per specificare una quantità minima di trasparenza. Se viene usato
un valore maggiore di zero sarà sempre possibile vedere una percentuale
di sfondo relativa al valore assegnato attraverso l'atmosfera, come per
la nebbia.
Poiché l'atmosfera è calcolata tramite un campionamento lungo
la visuale dell'osservatore e tenendo conto delle sorgenti luminose, è
soggetta ad aliasing (come ogni altra tecnica di campionamento). Ci sono
quattro parametri per minimizzare i difetti che si possono verificare :
samples,
jitter,
aa_level
e aa_threshold.
La parola chiave samples
determina quanti campioni sono calcolati in un intervallo lungo il raggio
visivo. La lunghezza dell'intervallo è, o la distanza specificata
dal valore del parametro distance
o la lunghezza della parte illuminata del raggio che è sempre minore.
Questa parte del raggio è la sezione che è più
probabilmente colpita dalla luce. Nel caso di uno spot è la
parte del raggio che giace nel cono di luce. Negli atri casi, la sua determinazione
diventa più difficile. L'unica cosa da ricordare è che la
lunghezza dell'intervallo di campionamento è variabile, ma non sarà
mai minore dei campioni specificati nella distanza specificata.
Una tecnica per ridurre gli errori dovuti al campionamento è di
applicare il jittering ai punti campionati. In altre parole, di aggiungere
un'interferenza casuale alla loro posizione. Si può fare questo
usando la parola chiave jitter.
Un'altra tecnica è il sovracampionamento (il metodo anti-aliasing) :
questo aiuta a eliminare i difetti dovuti al campionamento aggiungendo
campioni supplementari dove avvengono cambiamenti di grande entità
(ad esempio, ai contorni di un'ombra). L'anti-aliasing viene attivato dalla
parola chiave aa_level.
Se il valore assegnatole è maggiore di zero verrà usato il
sovracampionamento. I campioni aggiuntivi saranno posizionati ricorsivamente
tra due campioni che presentano valori molto diversi. Il livello a cui
cessa quest'iterazione viene specificato dalla parola chiave aa_level.
Un valore di 1 significa una suddivisione (un campione supplementare),
2 significa due suddivisioni (fino a tre campioni supplementari) ecc.
la soglia per la differenza tra due campioni adiacenti è data dalla
parola chiave aa_threshold.
Se la differenza di intensità è maggiore di questa soglia
verrà usato l'anti-aliasing per i due campioni.
Con gli spot si potranno ottenere i migliori risultati poiché il
loro cono di luce diventerà visibile. Le luci puntiformi possono
essere usate per creare effetti come lampioni nella nebbia. Si può
evitare che le luci interagiscano con l'atmosfera aggiungendo il comando
atmosphere off
alla sorgente luminosa. Le luci che non interagiscono con la scena possono
essere usate per aumentare il livello di luce complessivo per rendere il
risultato maggiormente realistico.
L'atmosfera non funzionerà se la macchina fotografica si trova all'interno
di un oggetto non vuoto, vedi il paragrafo "Oggetti
Vuoti e Oggetti Solidi".